/**
 * assing(target, ...sources)方法用于从一个对象复制所有的属性到另一个对象（合并对象）
 * 参数一：目标对象（该对象作为最终返回值）
 * 参数二：源对象（此处可为任意多个）
 * 拷贝过程中将调用源对象的getter方法，并在target对象上使用setter方法实现目标对象的拷贝。
 */

/**
 * 首先，定义函数的功能： 传入多个对象，将多个对象的内容合并到第一个对象中，最后返回合并后的对象，即参数中的第一个对象
 */
//使用场景一：拷贝对象，只需要传入的第一个参数为空对象即可
var box1 = {foo: 1};
var box2 = {name: 'jack'}
var copy = Object.assign({}, box1, box2);
console.log(copy); // { foo: 1,name:'jack' }

//使用场景二：合并对象，注意第一个传参将会被改变，所以如果不想改变第一个有值参数，可以传入一个空对象：
var o1 = {a: 1};
var o2 = {b: 2};
var o3 = {c: 3};

var obj = Object.assign(o1, o2, o3);//o1因为设置为target，则调用其setter方法设置了其他对象的属性到自身。
console.log(obj); // { a: 1, b: 2, c: 3 }
console.log(o1);  // { a: 1, b: 2, c: 3 }, 目标对象本身也发生了变化
